home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / game / zinzo / zinzo1.bas < prev   
BASIC Source File  |  1995-08-20  |  11KB  |  314 lines

  1. 1000 '゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:
  2. 1010 '゚・.*・゚:                                                     ゚・.*・゚:
  3. 1020 '゚・.*・゚:          すみたあきのじんぞういっこください         ゚・.*・゚:
  4. 1030 '゚・.*・゚:   -game version from Free Software Collection 11-   ゚・.*・゚:
  5. 1040 '゚・.*・゚:                                                     ゚・.*・゚:
  6. 1050 '゚・.*・゚:                              A.Sumita(KGH07252)     ゚・.*・゚:
  7. 1060 '゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:
  8. 1070 '_____>seting & read
  9. 1080 COLOR 7,0 : SCREEN@ 0 : CLEAR ,,5000,600000:CLS :RANDOMIZE TIME/3
  10. 1085 DIM Q_DAT$(2000),QQ(50),Q_BUF$(1000)
  11. 1090 DIM ODAT#(25000),F#(800),MAIN_CG#(20000),EUMU#(10000)
  12. 1100 DIM BUFF#(1000),LO$(30),INF$(70),MEEE#(200)
  13. 1110 FX=150:FX2=485:FY=285:LI=0:W=0:FX1=FX
  14. 1120 PALETTE 1,[0,0,0]:PLAY OFF
  15. 1130 SYMBOL(201,201),"Now loading...",1,1,%1,,,,4
  16. 1140 FOR I=0 TO 255
  17. 1150   PALETTE 1,[I,I,I]
  18. 1160 NEXT
  19. 1170 LOAD@ "opencg.dat"  ,ODAT#
  20. 1180 'LOAD@ "object.dat",OBJ#
  21. 1190 LOAD@ "fuki2.dat",F#
  22. 1200 LOAD@ "main.dat",MAIN_CG#
  23. 1210 LOAD@ "open.eup",EUMU#
  24. 1220 '_____>opening
  25. 1230 SCREEN@ 1: CLS
  26. 1240 FOR I=0 TO 20000 STEP 5000
  27. 1250  PUT@A (80,60)-(240,180),ODAT#,,,,,I
  28. 1260  WAIT 13
  29. 1270 NEXT
  30. 1280 MES$="SUMITA AKI NO 'ZINZO'IKKO KUDASAI@"
  31. 1290 MX=20 : MY=155 : GOSUB *MES1
  32. 1300 MES$="PRESENTED BY A.SUMITA$"
  33. 1310 MX=67 : MY=175 : GOSUB *MES1 :GOTO 1470 
  34. 1320 '_____>mesaegu1
  35. 1330 *MES1
  36. 1340 C=1
  37. 1350 P$=KMID$(MES$,C,1)
  38. 1360 IF P$="@" THEN PLAY "@75]]]]T30L50-C&BC[[[[":WAIT 50:RETURN
  39. 1370 IF P$="$" THEN RETURN
  40. 1380 IF P$=" " THEN 1460
  41. 1390 SYMBOL(MX+C*8-1,MY-1),P$,1,.5!,0
  42. 1400 SYMBOL(MX+C*8+1,MY-1),P$,1,.5!,0
  43. 1410 SYMBOL(MX+C*8+1,MY+1),P$,1,.5!,0
  44. 1420 SYMBOL(MX+C*8-1,MY+1),P$,1,.5!,0
  45. 1430 SYMBOL(MX+C*8  ,MY  ),P$,1,.5!,7
  46. 1440 PLAY "@75T280L300A":WAIT 4
  47. 1450 C=C+1 : GOTO 1350
  48. 1460 C=C+1 : PLAY "@71T280L300A":WAIT 4 : GOTO 1350
  49. 1470 '
  50. 1480 'OPENING2
  51. 1490 WAIT 100
  52. 1500 FOR I=0 TO 255 STEP 20
  53. 1510   LINE(0,0)-(640,480),OR,[I,I,I],BF
  54. 1520 NEXT
  55. 1530 *OPEN2
  56. 1540 SCREEN@ 0
  57. 1550 CLS:LOAD@ "OPENING2.TIF" : PLAY@ EUMU#,1
  58. 1560 'マウスの初期化・形状設定・表示
  59. 1570 MOUSE 0
  60. 1580 A$=CHR$(&H1F,&HFF,&H07,&HFF,&H00,&HFF,&H80,&H3F,&H80,&H1F,&HC0,&H1F,&HC0,&H1F,&HC0,&H1F,&HE0,&H2F,&HE0,&H87,&HF0,&H83,&HFF,&H07,&HFF,&H8F,&HFF,&HDF,&HFF,&HFF,&HFF,&HFF)
  61. 1590 B$=CHR$(&H00,&H00,&H40,&H00,&H30,&H00,&H2E,&H00,&H17,&H80,&H17,&HC0,&H17,&HC0,&H0B,&H80,&H0B,&H80,&H06,&H10,&H00,&H38,&H00,&H70,&H00,&H20)
  62. 1600 MOUSE 2,A$,B$,0,0
  63. 1610 MOUSE 1,550,430,1:PALETTE 15,[255,255,255]
  64. 1620 F=-1:FF=F
  65. 1630 WHILE MOUSE(2,0)=0
  66. 1640   X=MOUSE(0):Y=MOUSE(1)
  67. 1650   IF X>213 AND X<383 AND Y>117 AND Y<143 THEN FF=F:F=0:GOSUB*HAKO
  68. 1660   IF X>213 AND X<383 AND Y>157 AND Y<183 THEN FF=F:F=1:GOSUB*HAKO
  69. 1670   IF X>213 AND X<383 AND Y>197 AND Y<223 THEN FF=F:F=2:GOSUB*HAKO
  70. 1680   IF X>213 AND X<383 AND Y>237 AND Y<263 THEN FF=F:F=3:GOSUB*HAKO
  71. 1690 WEND:GOTO 1760
  72. 1700 *HAKO
  73. 1710 IF F=FF THEN RETURN
  74. 1720 IF FF=-1 THEN 1740
  75. 1730 LINE(213,117+FF*40)-(383,143+FF*40),XOR,%2,BF
  76. 1740 LINE(213,117+F*40)-(383,143+F*40),XOR,%2,BF
  77. 1750 RETURN
  78. 1760 X1=MOUSE(4,0)
  79. 1770 Y1=MOUSE(5,0)
  80. 1780 IF X1>213 AND X1<383 AND Y1>117 AND Y1<143 THEN *GAME
  81. 1790 IF X1>213 AND X1<383 AND Y1>157 AND Y1<183 THEN *LOAD
  82. 1800 IF X1>213 AND X1<383 AND Y1>197 AND Y1<223 THEN *INFO
  83. 1810 IF X1>213 AND X1<383 AND Y1>237 AND Y1<263 THEN END
  84. 1820 GOTO 1630
  85. 1830 '------------------------------------------------------------------
  86. 1840 *GAME
  87. 1850 CLS:LOAD@ "haike5.tif":ON MOUSE(4) GOSUB *MEXIT:MOUSE(4) ON
  88. 1860 '変数を初期化する
  89. 1870 FX=150:FX2=485:FY=285:LI=0:W=0:FX1=FX
  90. 1880 'DIM BUFF#(1000),odat#(20000)
  91. 1890 GET@A(0,FY)-(640,FY+18),BUFF#
  92. 1900 '吹き出し
  93. 1910 GOTO 2180
  94. 1920 *AKI 'セリフを表示する
  95. 1925 MOUSE(4) OFF
  96. 1930 IF LI<>0 THEN PUT@A(0,FY-LI*18)-(640,FY),ODAT#
  97. 1940 PUT@A(0,FY)-(640,FY+18),BUFF#
  98. 1950 LINE(FX2-10,FY+18)-(FX2+19,FY+39),PSET,%0,BF
  99. 1960 LINE(FX-10,FY+18)-(FX+19,FY+39),PSET,%0,BF
  100. 1970 MO=KLEN(AKI$):MD=LEN(AKI$)
  101. 1980 X=INT(FX1-MD/2*8-7):IF X<0 THEN X=0
  102. 1990 IF W=1 THEN X=INT(FX1+MD/2*8+7):IF X>640 THEN X=640
  103. 2000 'xxx=
  104. 2010 PUT@A(X-W*7,FY)-(X+7-W*7,FY+18),F#,MATTE,,,%15,W*400
  105. 2020 PUT@A(FX1-9,FY)-(FX1+10,FY+39),F#,MATTE,,,%15,200+W*300
  106. 2030 LINE(X+7-W*14,FY)-(X+7+MD*8-W*(MD*8*2+14),FY+17),PSET,%(4+W*2),BF
  107. 2040 PUT@A(X+7+MD*8-W*(MD*8*2+14+7),FY)-(X+7+MD*8+7-W*(MD*8*2+14+7),FY+18),F#,MATTE,,,%15,100+W*200
  108. 2050 SYMBOL(X+7-W*(7+MD*8+7),FY+1),AKI$,1,1,%15
  109. 2060 LI=LI+1:IF LI=15 THEN LI=14
  110. 2070 GET@A(0,FY-(LI-1)*18)-(640,FY+18),ODAT#
  111. 2080 'LI=LI+1:IF LI=15 THEN LI=14
  112. 2090 'PUT@A(0,300)-(640,318),odat#
  113. 2100 'クリック待ち
  114. 2110 ON MOUSE(2) GOSUB 2160:MOUSE(2) ON
  115. 2120   SYMBOL(315,335),"▼",1,1,%7
  116. 2130   SYMBOL(313,333),"▼",1,1,%15:WAIT 30
  117. 2140   LINE(313,333)-(335,353),PSET,%0,BF:WAIT 30
  118. 2150 GOTO 2120
  119. 2160   MOUSE(2) OFF:LINE(313,333)-(335,353),PSET,%0,BF:RETURN 2170
  120. 2170 MOUSE(4) ON: RETURN
  121. 2180 'ゲームMAINルーチン
  122. 2190 *MAIN
  123. 2200 I=0:Q=32:J=1:JJ=0:JY=0:CONTI=0:SSSS=0:BGM 0
  124. 2210 OPEN "I", #1,"QUIZ.TXT"
  125. 2220 OPEN "I", #2,"GSTART.TXT"
  126. 2230 LOAD@ "qno2.DAT",QQ
  127. 2240 WHILE EOF(1)<>-1 
  128. 2250   INPUT#1, Q_DAT$(I)
  129. 2260   I=I+1
  130. 2270 WEND 
  131. 2280 I=0
  132. 2290 WHILE EOF(2)<>-1 
  133. 2300   INPUT#2, Q_BUF$(I)
  134. 2310   I=I+1
  135. 2320 WEND 
  136. 2330 CLOSE#1
  137. 2340 '■GSTART
  138. 2350 GCC=0:GCC$=" "
  139. 2360 WHILE GCC$<>"●"
  140. 2370   COME$=Q_BUF$(GCC):GCC$=KLEFT$(COME$,1)
  141. 2380   IF GCC$="●" THEN 2410
  142. 2390   GOSUB *COME
  143. 2400   GCC=GCC+1
  144. 2410 WEND 
  145. 2420 '
  146. 2430 *MONDAI '問題!
  147. 2440 BGM 0:DRMS$="@16V15L15T200FFF.":
  148. 2450 BASE$="@25V4L15T200FFF.":PLAY BASE$,DRMS$:BGM 1
  149. 2460 PUT@A(0,0)-(640,480),MAIN_CG#:LI=0:J=1:JJ=0:JY=0:CONTI=0
  150. 2470 QZ=INT(RND*Q)+1
  151. 2480 A$=Q_DAT$(QQ(QZ))
  152. 2490 B$=" "
  153. 2500 WHILE B$<>"?"
  154. 2510   B$=KMID$(A$,J,1)
  155. 2520   SYMBOL(90+JJ*16  ,55+JY*16  ),B$,1,1,%7
  156. 2530   SYMBOL(90+JJ*16-1,55+JY*16-1),B$,1,1,%15
  157. 2540   J=J+1:JJ=JJ+1:IF JJ=30 THEN JJ=2:JY=JY+1
  158. 2550 WEND
  159. 2560 '問題表示
  160. 2570 ZQ=QQ(QZ):QH=0
  161. 2580 WHILE QH<>4
  162. 2590   ZQ=ZQ+1
  163. 2600   QP$=KMID$(Q_DAT$(ZQ),4)
  164. 2610   QL=LEN(QP$):IF QH=3 THEN QP$=MID$(Q_DAT$(ZQ),7,QL-2):QL=LEN(QP$)
  165. 2620   QX=320-QL*4
  166. 2630   SYMBOL(QX  ,150+QH*30),QP$,1,1,%7
  167. 2640   SYMBOL(QX+1,151+QH*30),QP$,1,1,%15
  168. 2650   QH=QH+1
  169. 2660 WEND
  170. 2670 F=-1:FF=F
  171. 2680 WHILE MOUSE(2,0)=0
  172. 2690   X=MOUSE(0):Y=MOUSE(1)
  173. 2700   IF X>70 AND X<560 AND Y>149 AND Y<166 THEN FF=F:F=0:GOSUB*ANS
  174. 2710   IF X>70 AND X<560 AND Y>179 AND Y<196 THEN FF=F:F=1:GOSUB*ANS
  175. 2720   IF X>70 AND X<560 AND Y>209 AND Y<226 THEN FF=F:F=2:GOSUB*ANS
  176. 2730   IF X>70 AND X<560 AND Y>239 AND Y<256 THEN FF=F:F=3:GOSUB*ANS
  177. 2740 WEND:GOTO 2810
  178. 2750 *ANS
  179. 2760 IF F=FF THEN RETURN
  180. 2770 IF FF=-1 THEN 2790
  181. 2780 LINE(70,149+FF*30)-(560,149+FF*30+19),XOR,%2,BF
  182. 2790 LINE(70,149+F*30)-(560,149+F*30+19),XOR,%2,BF
  183. 2800 RETURN
  184. 2810 X1=MOUSE(4,0)
  185. 2820 Y1=MOUSE(5,0)
  186. 2830 IF X1>70 AND X1<560 AND Y1>149 AND Y1<166 THEN ANS=0:GOTO 2880
  187. 2840 IF X1>70 AND X1<560 AND Y1>179 AND Y1<196 THEN ANS=1:GOTO 2880
  188. 2850 IF X1>70 AND X1<560 AND Y1>209 AND Y1<226 THEN ANS=2:GOTO 2880
  189. 2860 IF X1>70 AND X1<560 AND Y1>239 AND Y1<256 THEN ANS=3:GOTO 2880
  190. 2870 GOTO 2680
  191. 2880 ZQ=ZQ+1
  192. 2890 COME$=Q_DAT$(ZQ)
  193. 2900 IF KLEFT$(COME$,2)="1:" THEN IF ANS=0 THEN *COMEST
  194. 2910 IF KLEFT$(COME$,2)="2:" THEN IF ANS=1 THEN *COMEST
  195. 2920 IF KLEFT$(COME$,2)="3:" THEN IF ANS=2 THEN *COMEST
  196. 2930 IF KLEFT$(COME$,2)="4:" THEN IF ANS=3 THEN *COMEST
  197. 2940 GOTO 2880
  198. 2950 '
  199. 2960 *COMEST
  200. 2970 COME$=KMID$(COME$,3):CONTI=0:PUT@A(0,0)-(640,480),MAIN_CG#
  201. 2980 GOSUB *COME
  202. 2990 ZQ=ZQ+1
  203. 3000 COME$=Q_DAT$(ZQ):TT=LEN(COME$)
  204. 3010 IF KMID$(COME$,2,1)=":" THEN *MONDAI
  205. 3020 IF KRIGHT$(COME$,1)="○" THEN COME$=MID$(COME$,1,TT-2):GOSUB *COME:GOTO *MONDAI
  206. 3030 GOTO 2980
  207. 3040 '
  208. 3050 *COME
  209. 3060 IF KLEFT$(COME$,1)="秋" THEN COME$=KMID$(COME$,3):GOSUB*AS :RETURN
  210. 3070 IF KLEFT$(COME$,1)="ア" THEN COME$=KMID$(COME$,3):GOSUB*AS2:RETURN
  211. 3080 IF CONTI=1 THEN GOSUB *AS:RETURN ELSE IF CONTI=2 THEN GOSUB*AS2:RETURN
  212. 3090 SYMBOL(300,300),COME$,1,1,%15
  213. 3100 RETURN
  214. 3110 *AS
  215. 3120 TT=LEN(COME$)
  216. 3130 IF CONTI=1 THEN GOSUB *CONTI
  217. 3140 AKI$=COME$:IF KRIGHT$(AKI$,1)="」" THEN CONTI=0:AKI$=MID$(AKI$,1,TT-2):COME$=AKI$ ELSE CONTI=1
  218. 3150 TT=LEN(AKI$)
  219. 3160 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):TT=LEN(COME$):W=0:FX1=FX:GOSUB *AKI:AKI$=COME$
  220. 3170 GOTO 3190
  221. 3180 W=0:FX1=FX:GOSUB *AKI:TT=LEN(COME$)
  222. 3190 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):GOTO 3180 ELSE AKI$=COME$
  223. 3200 IF CONTI=0 THEN W=0:FX1=FX:GOSUB*AKI:RETURN
  224. 3210 CONTI$=COME$
  225. 3220 RETURN
  226. 3230 *CONTI
  227. 3240 T1=LEN(CONTI$):T2=LEN(COME$)
  228. 3250 IF (T1+T2)<79 THEN CONTI=0:COME$=CONTI$+COME$
  229. 3260 T3=78-T1:COME2$=MID$(COME$,T3+1):COME$=CONTI$+LEFT$(COME$,T3)
  230. 3270 'IF CONTI=1 THEN GOSUB *AS ELSE GOSUB *AS2
  231. 3280 CONTI$=COME2$
  232. 3290 RETURN
  233. 3300 *AS2
  234. 3310 TT=LEN(COME$)
  235. 3320 IF CONTI=2 THEN GOSUB *CONTI
  236. 3330 AKI$=COME$:IF KRIGHT$(AKI$,1)="」" THEN CONTI=0:AKI$=MID$(AKI$,1,TT-2):COME$=AKI$ ELSE CONTI=2
  237. 3340 TT=LEN(AKI$)
  238. 3350 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):TT=LEN(COME$):W=1:FX1=FX2:GOSUB *AKI:AKI$=COME$
  239. 3360 GOTO 3380
  240. 3370 W=1:FX1=FX2:GOSUB *AKI:TT=LEN(COME$)
  241. 3380 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):GOTO 3370 ELSE AKI$=COME$
  242. 3390 IF CONTI=0 THEN W=1:FX1=FX2:GOSUB*AKI:RETURN
  243. 3400 CONTI$=COME$
  244. 3410 RETURN
  245. 3420 '===================================================================
  246. 3430 *LOAD
  247. 3440 PLAY OFF:CLS:LOAD@ "HAIKE5.TIF"
  248. 3450 GET@A(0,FY)-(640,FY+18),BUFF#
  249. 3460 OPEN "I", #3,"LOAD.TXT"
  250. 3470 I=0
  251. 3480 WHILE EOF(3)<>-1 
  252. 3490   INPUT#3, LO$(I)
  253. 3500   I=I+1
  254. 3510 WEND 
  255. 3520 CLOSE#3
  256. 3530 GCC=0:GCC$=" "
  257. 3540 WHILE GCC$<>"●"
  258. 3550   COME$=LO$(GCC):GCC$=KLEFT$(COME$,1)
  259. 3560   IF GCC$="●" THEN 3590
  260. 3570   GOSUB *COME
  261. 3580   GCC=GCC+1
  262. 3590 WEND:LI=0 
  263. 3600 MOUSE 1:GOTO *OPEN2
  264. 3610 *INFO
  265. 3620 PLAY OFF:MOUSE 1:LOAD@ "INF.TIF":GET@A(0,0)-(640,480),ODAT#
  266. 3630 OPEN "I", #1,"INFO.TXT"
  267. 3640 I=0
  268. 3650 WHILE EOF(1)<>-1 
  269. 3660   INPUT#1, INF$(I)
  270. 3670   I=I+1
  271. 3680 WEND 
  272. 3690 CLOSE#1
  273. 3700 GCC=0:GCC$=" ":IX=0:IY=1
  274. 3710 WHILE GCC$<>"●"
  275. 3720   COME$=INF$(GCC):GCC$=KLEFT$(COME$,1)
  276. 3730   IF GCC$="●" THEN 3810
  277. 3740   IL=LEN(COME$):IX=(320-IL/2*8)
  278. 3750   SYMBOL(IX+1,IY*30+1+30),COME$,1,1,%0
  279. 3760   SYMBOL(IX+1,IY*30-1+30),COME$,1,1,%0
  280. 3770   SYMBOL(IX-1,IY*30+1+30),COME$,1,1,%0
  281. 3780   SYMBOL(IX-1,IY*30-1+30),COME$,1,1,%0
  282. 3790   SYMBOL(IX,IY*30+30),COME$,1,1,%15:WAIT 180
  283. 3800   GCC=GCC+1:IY=IY+1:IF IY=14 THEN IY=0:PUT@A(0,0)-(640,480),ODAT#
  284. 3810 WEND 
  285. 4440 PLAY OFF:LOAD@ "HAIKE5.TIF":MOUSE 0
  286. 4450 GET@A(0,FY)-(640,FY+18),BUFF#
  287. 4460 OPEN "I", #3,"info2.TXT"
  288. 4470 I=0
  289. 4480 WHILE EOF(3)<>-1 
  290. 4490   INPUT#3, INF$(I)
  291. 4500   I=I+1
  292. 4510 WEND 
  293. 4520 CLOSE#3
  294. 4530 GCC=0:GCC$=" "
  295. 4540 WHILE GCC$<>"●"
  296. 4550   COME$=INF$(GCC):GCC$=KLEFT$(COME$,1)
  297. 4560   IF GCC$="●" THEN 4590
  298. 4570   GOSUB *COME
  299. 4580   GCC=GCC+1
  300. 4590 WEND:LI=0
  301. 4600 MOUSE 1:GOTO *OPEN2
  302. 5000 *MEXIT
  303. 5010  MMX=MOUSE(0):IF MMX>590 THEN MMX=590
  304. 5015  MMY=MOUSE(1):IF MMX>430 THEN MMX=430
  305. 5020  GET@A(MMX,MMY)-(MMX+50,MMY+50),MEEE#
  306. 5030  LINE(MMX,MMY)-(MMX+50,MMY+50),PSET,%15,BF,%0
  307. 5040  SYMBOL(MMX+10,MMY+10),"キャンセル",.5!,.5!,%15
  308. 5060  SYMBOL(MMX+10,MMY+30),"EXIT",.5!,.5!,%15
  309. 5070  WHILE MOUSE(2,0)=0:WEND
  310. 5080  MXX=MOUSE(0):MYY=MOUSE(1)
  311. 5090  IF MXX>=MMX AND MXX<=MMX+50 AND MYY>=MMY AND MYY<=MMY+25 THEN PUT@A(MMX,MMY)-(MMX+50,MMY+50),MEEE#:RETURN
  312. 5100  IF MXX>=MMX AND MXX<=MMX+50 AND MYY>=MMY+25 AND MYY<=MMY+50 THEN MOUSE(4) OFF:END
  313. 5200 GOTO 5070
  314.